#ifndef __USART2_H__
#define __USART2_H__

#include "main.h"
#include "usart.h"
#include <string.h>
#include <stdio.h>

/* ========================= 用户配置参数区 ========================= */
/* printf redirects */
#define HAL_USART			
//#define HAL_USART_DMA 
#define huartx huart6
// 指令的最小长度
#define COMMAND_MIN_LENGTH 4
// 循环缓冲区大小
#define BUFFER_SIZE 128
// 循环缓冲区
static uint8_t buffer[BUFFER_SIZE];
// 循环缓冲区读索引
static uint8_t readIndex = 0;
// 循环缓冲区写索引
static uint8_t writeIndex = 0;

/* ========================= 用户实现接口 ========================= */
/**
 * @brief 向缓冲区写入数据
 * @param data 要写入的数据指针
 * @param length 要写入的数据长度
 * @return 写入的数据长度
 */
uint8_t Command_Write(uint8_t *data, uint8_t length);

/**
 * @brief 尝试获取一条指令
 * @param command 指令存放指针
 * @return 获取的指令长度
 * @retval 0 没有获取到指令
 */
uint8_t Command_GetCommand(uint8_t *command);

/**
  * @brief  printf重定向   
  */
int fputc(int ch, FILE * f);
#endif
